package com.glut.service;

import com.glut.vo.ErrorQuestion;
import com.glut.vo.Examination;
import com.glut.vo.FsAnswers;
import com.glut.vo.SdAnswers;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author:shenly
 * @date:2020/05/03
 * @Description:
 */
public interface ExaminationService {

    /**
     *
     * @param examination
     * @return
     */
    int addExam(Examination examination);

    /**
     * 试卷信息存入数据库---exam,sd_answer,fs_answer
     * @param examNo 试卷Id
     * @param userId 生成试卷的用户Id
     * @param paperTotalScore 试卷总分
     * @param paperDifficulty 试卷难度
     * @param qIdList 试卷中的题目Id集合
     * @param qtList 试卷中的题型Id集合List<Map<String, Object> Object为ExamQuestiontype类型
     * @return
     */
    public boolean inToDB(Long examNo, String userId,int paperTotalScore, double paperDifficulty, List<Long> qIdList, List<Map<String, Object>> qtList,Integer totalScores,Integer totalValues);

    /**
     * 查询测试信息
     * @param examNo
     * @return
     */
    List<SdAnswers> selectSdExamById(@Param("userId")String userId,
                               @Param("examNo")String examNo);

    /**
     * 通过userId,examNo,qId查询题信息
     * @param errorQuestion
     * @return
     */
    List<SdAnswers> selectSdErrorById(ErrorQuestion errorQuestion);

    /**
     * 查询测试信息
     * @param examNo
     * @return
     */
    List<FsAnswers> selectFsExamById(@Param("userId")String userId,
                               @Param("examNo")String examNo);

    /**
     * 查询测试信息
     * @param examNo
     * @return
     */
    List<FsAnswers> selectShExamById(@Param("userId")String userId,
                                     @Param("examNo")String examNo);

    /**
     * 查询历史测试信息
     * @param userId
     * @return
     */
    List<Examination> selectAllExam(String userId);

    /**
     * 通过userId,examNo,qId查询题信息
     * @param errorQuestion
     * @return
     */
    List<FsAnswers> selectFsErrorById(ErrorQuestion errorQuestion);

    /**
     * 通过userId,examNo,qId查询题信息
     * @param errorQuestion
     * @return
     */
    List<FsAnswers> selectShErrorById(ErrorQuestion errorQuestion);

    /**
     * 查询历史测试信息
     * @param userId
     * @return
     */
    List<FsAnswers> selectAllFsExam(String userId);

    /**
     * 新增考卷
     * @param map
     */
    void insertExam(Map<String,Object> map);

    /**
     * 新增考卷
     * @param map
     */
    void insertFsExam(Map<String,Object> map);

    /**
     * 更新考卷
     * @param
     */
    int updateExamination(Examination examination);

    /**
     * 更新考卷、主观题分数
     * @param map
     */
    void updateExam(Map<String,Object> map);
}
